#include "../include/test.h"

int main()
{
    int opt = 0; // 菜单选项
    int ret = 0; // 函数返回值
    int index = 0, data = 0; // 插入数据时输入的参数
    data_type old_data = 0, new_data = 0; // 修改数据时输入的参数
    

    list *plist = NULL;

    while(1){
        opt = menu();
        if(opt == -1) break; // 退出



        switch(opt){
            case 1: //  创建表
                plist = create_list();
                printf("创建表成功\n");
                break;

            case 2: // 插入元素
                
                printf("请输入要插入的位置(尾插:-1)："); scanf("%d", &index);
                printf("请输入要插入的元素："); scanf("%d", &data);
                ret = list_insert(plist, index, data);
                break;

            case 3: // 删除元素
                printf("请输入要插入的位置(尾插:-1)："); scanf("%d", &index);
                ret = list_delete(plist, index, &data);
                printf("删除的元素为：%d\n", data);
                break;

            case 4: // 修改
                printf("请输入要修改的元素："); scanf("%d", &old_data); 
                printf("请输入要修改的元素："); scanf("%d", &new_data);
                ret = list_modify(plist, old_data, new_data);
                break;
            
            case 5: // 查找
                printf("请输入要查找的元素："); scanf("%d", &data);
                ret = list_search(plist, data);
                break;

            case 6: // 显示表
                ret = list_show(plist);
                break;

            case 7: // 保存表
                save(plist);
                break;

            case 8: // 加载
                plist = load();
                break;

            default:
                printf("无效选项，请重新输入\n");
                break;
        }

        switch(ret){
            case LIST_NOT_EXIST:
                    printf("链表不存在，请先创建链表\n");
                break;

            case INDEX_ERROR:
                printf("索引错误\n");
                break;

            case LIST_FULL:
                printf("表已满\n");
                break;

            case LIST_EMPTY:
                printf("表为空\n");
                break;

            case DATA_NOT_EXIST:
                printf("数据不存在\n");
                break;

            default:
                //printf("操作成功\n"); // 一般操作成功后，无需提示
                break;
        }

    }

    return 0;
}